import axios from 'axios'
import store from '@/store'
import router from '@/router'
import { Toast } from 'vant'

const instance = axios.create({
  // baseURL: 'http://ttapi.research.itcast.cn/',
  baseURL: 'http://toutiao-app.itheima.net/',
  timeout: 3000
})

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 统一配置token
  // 1. 获取到token
  const token = store.state.token.token
  // 2. 判断是否有token
  if (token) {
    // 3. 如果有，添加上token
    config.headers.Authorization = 'Bearer ' + token
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response.data
}, function (error) {
  // error对象代表错误对象
  // config: 本次请求的配置  request: 本次请求的信息  response: 本次请求的响应
  console.log('报错了......')
  console.dir(error)
  // 对响应错误做点什么
  /*
    1. 通过error.response.status 获取响应状态码
    2. 判断是否是401 如果是401,说明是由于token失效导致的
    3. 如果是401,  删除旧的token 跳转到登录页面 给一个token过期的提示
  */
  if (error.response.status === 401) {
    // token过期
    // 1. 删除旧token
    store.commit('removeToken')
    // 2. 跳转到登录页
    router.push({
      path: '/login',
      query: {
        back: router.currentRoute.path
      }
    })
    // 3. 给提示消息
    Toast.fail('登录信息失效')
  } else {
    return Promise.reject(error)
  }
})

export default instance
